#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>

//wait 回收子进程,就会阻塞,处理不了自己的事情
//要配合SIGCHLD来释放父进程,让父进程做自己的事情

void hande(int sig)
{
	wait(NULL);
	printf("子进程回收\n");
	printf("get sig = %d", sig);

}



int main()
{

	pid_t pid;

	struct sigaction act;
	act.sa_handler = hande;
	act.sa_flags = 0;
	sigemptyset(&act.sa_mask);

	pid = fork();
	if(pid > 0)
	{
		sigaction(SIGCHLD, &act, NULL);

		while(1)
		{
			sleep(3);
			printf("父进程在处理自己的事情\n");
		}

	}else if(pid == 0)
	{

		sleep(10);
		exit(0);

	}else
	{
		perror("fork");
	}
}



















